<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <!-- 非透明类单例--不够完善 -->
    <script>
        // 单例模式-保证一个类仅有一个实例，并提供一个访问它的全局访问点
        // 思想：用一个变量来标志当前是否已经为某个类创建过对象，如果是，则在下一次获取该类的实例时，直接返回之前创建得对象；
        // 单例模式的核心是确保只有一个实例，并提供全局访问
        var Singleton = function (name) {
            this.name = name
            this.instance = null
        }
        Singleton.prototype.getName = function () {
            console.log(this.name);
        }

        Singleton.getInstance = function (name) {
            if (!this.instance) {
                this.instance = new Singleton(name)
            }
            return this.instance
        }

        var a = Singleton.getInstance('sven1')
        var b = Singleton.getInstance('sven2')
        console.log(a == b); //true
        console.log(a.name); //都是sven1
        console.log(b.name); //都是sven1
    </script>
</body>

</html>